package com.campanyes.camp2011;

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

import org.apache.log4j.Logger;

import com.campanyes.entitites.Configuracion;
import com.campanyes.entitites.ConsultasBBDD;
import com.campanyes.entitites.Opositor;
import com.campanyes.entitites.Scripts;
import com.campanyes.entitites.Utils;

public class CargarCampanya2011DeExcel {
	
	private static final Logger logger = Logger.getLogger(CargarCampanya2011DeExcel.class);

	private Opositor getOpositorDeFila(Sheet sheet, int fila){
		Utils utils = new Utils();
		Cell celda = null;
		
		Opositor opositor = null;
		try{
			celda = sheet.getCell(2, fila);
			String auxil = celda.getContents();
		    String DNI =  utils.prepararDNI(auxil);
		    
					
			celda= sheet.getCell(3, fila);
			String aux = celda.getContents();
			String cognom1= utils.prepararString(celda.getContents());
			
					
			celda= sheet.getCell(4, fila);
			String cognom2 = utils.prepararString(celda.getContents());
					
			
			celda= sheet.getCell(5, fila);			
			String aux2 = celda.getContents();
			String nom = utils.prepararString(celda.getContents());		
			boolean ok=false;
			
					
			celda= sheet.getCell(6, fila);
			String merits = celda.getContents();
					
			celda= sheet.getCell(7, fila);
			String fisiques = celda.getContents();
					
			celda= sheet.getCell(8, fila);
			String nfinal = celda.getContents();
			
			opositor = new Opositor(DNI, nom, cognom1, cognom2, merits, fisiques, nfinal);
			
			
		}catch(Exception e){
			e.printStackTrace();
			//
		}
		
		return opositor;		
	}
	
	
	public void runMain(String [] args) throws BiffException, IOException, ClassNotFoundException, SQLException {
		
				
		Configuracion conf = new Configuracion(args[0], args[1]);
		Class.forName(conf.getBBDD_DRIVER());		
		Connection conexion = DriverManager.getConnection ("jdbc:mysql://"+conf.getBBDD_HOST()+"/"+conf.getBBDD_DATABASE(),conf.getBBDD_USER(), conf.getBBDD_PASSWORD());
		Statement s = conexion.createStatement();
		
		
		CargarCampanya2011DeExcel leer = new CargarCampanya2011DeExcel();
		
		List<String> listaRegions = new ArrayList<String>();
		
		//listaRegions.add("Todos");
		listaRegions.add("Centre");
		listaRegions.add("Ebre");
		listaRegions.add("Girona");
		listaRegions.add("Lleida");
		listaRegions.add("Nord");
		listaRegions.add("Sud");
		listaRegions.add("Tarragona");
		
		
		
		String anyo = "2011";

		for(int i=0; i<listaRegions.size(); i++){
			String region = (String) listaRegions.get(i);
			region = region.substring(0, 1).toUpperCase() + region.substring(1);
			logger.info("Inicio del proceso para la region "+region);
			leer.insertarRegio(s, region, anyo);	
			logger.info("Fin del proceso para la region "+region);
		}
		
		logger.info("FIN DE LA CARGA 2011");
	
	}
	
	private void insertarRegio(Statement s, String region, String anyo) throws BiffException, IOException{
		CargarCampanya2011DeExcel leer = new CargarCampanya2011DeExcel();
		ConsultasBBDD consultasBBDD = new ConsultasBBDD(s);
		Scripts scripts = new Scripts(s);
		
		//Eliminamos la tabla por si existia antes
		scripts.dropTablaRegio(region, anyo);
		
		//La creamos de nuevo
		scripts.crearTablaRegio(region, anyo);		
		
		//Leemos el fichero Excel
		Workbook workbook = Workbook.getWorkbook(new File("files/NotesForestals"+anyo+".xls"));        
		
		Sheet sheet = workbook.getSheet(region);
       		
		int i;
		
        for(i=1; i<sheet.getRows(); i++){
        	Opositor opositor = leer.getOpositorDeFila(sheet, i); 
        	        	
        	consultasBBDD.insertarOpositor(region, anyo, opositor);        	                		
        }
        
        logger.info("Se han procesado "+i+" opositores para la region "+region);
              
        workbook.close();        
		
	}
}
